/**
****************************************************************************
* DESC       ：REQ00012521-短信系统需求--理赔对接
* AUTHOR     ：汪芸
* CREATEDATE ： 2012-12-17
* MODIFYLIST ：   Name       Date            Reason/Contents
*          ------------------------------------------------------
****************************************************************************
*/
package com.dbic.sendMessage.client;

import java.net.URL;

import javax.xml.rpc.holders.StringHolder;

import org.apache.log4j.Logger;

import java.sql.SQLException;
import java.util.List;


/**
 * 测试服务端
 * @author xulei
 * 
 */
public class Test {
	/**
	 * @param args
	 */
	private static Logger log = Logger.getLogger(Test.class);
	public static void main(String[] args) {
		long startt = System.currentTimeMillis();
		try {
			new Test().test();
		} catch (Exception e) {
			e.printStackTrace();
		}
		 long endt = System.currentTimeMillis();
		 System.out.println("-----发送短信结束---发送1条，共耗时： " + (endt - startt)/1000 + " 秒");
	}
	public void test() {
		long startt = System.currentTimeMillis();
		SmsNewOperatorService service = null;
		SmsNewOperator_PortType sendNewMessage = null;
		try {
			StringHolder sendResMsg = new StringHolder();
            StringHolder errMsg = new StringHolder();
			//System.out.println("connect......");
			String StrPortAddress="http://10.1.100.7:7013/ema/services/SmsNewOperator";
			URL portAddress = new URL(StrPortAddress);
			// 得到客户端服务
			service=new SmsNewOperatorServiceLocator();
			// 得到客户端stub
			sendNewMessage=service.getSmsNewOperator(portAddress);
			// 测试服务方法
			MtNewMessage message=new MtNewMessage();
			String phone="13636445902";
			message.setPhoneNumber(phone);
			message.setContent("==================李洪志===============");
			sendNewMessage.sendSms("2000000000", "B01", message, sendResMsg, errMsg);
			System.out.println("sendSmsResMsg:" + sendResMsg.value);
            System.out.println("sendSmsErrMsg:" + errMsg.value);
            long endt = System.currentTimeMillis();
            System.out.println("-----发送短信结束：发送1条，共耗时 " + (endt - startt) + " 毫秒");
            String reslutValue = "";
            reslutValue = errMsg.value;
            System.out.println("reslutValue:"+reslutValue);
            /**错误码说明
             * -1：输入参数不正确，请检查机构代码，业务类型，等输入参数是否为空
			   -2：机构不存在，请检查机构代码是否正确
			   -3：机构没有对应的短信服务类型
			   -4：客户端ip地址不正确（当需要ip校验时）
			   -5：smsId与数据库重复（下发短信时，如果smsId 由客户端传入，该参数不能重复）
			   -6：内容含有非法关键字，请检查下发内容。
			   -7：对应的号码下发失败，下发号码为空或其他错误，导致该号码发送失败
			   -8：访问频率过快
             */
            if("-1".equals(reslutValue) || "-2".equals(reslutValue) || "-3".equals(reslutValue)|| "-4".equals(reslutValue)||"-5".equals(reslutValue)||"-5".equals(reslutValue) || "-7".equals(reslutValue) || "-8".equals(reslutValue)){
            	System.out.println("-----发送短信结束：发送失败");
            }else{
            	System.out.println("-----发送短信结束：发送成功");
            }
            if("-1".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "输入参数不正确，请检查机构代码，业务类型，等输入参数是否为空");
            }else if("-2".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "机构不存在，请检查机构代码是否正确");
            }else if("-3".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "机构没有对应的短信服务类型");
            }else if("-4".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "客户端ip地址不正确（当需要ip校验时）");
            }else if("-5".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "smsId与数据库重复（下发短信时，如果smsId 由客户端传入，该参数不能重复）");
            }else if("-6".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "内容含有非法关键字，请检查下发内容");
            }else if("-7".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "对应的号码下发失败，下发号码为空或其他错误，导致该号码发送失败");
            }else if("-8".equals(reslutValue)){
            	System.out.println("-----phone:" + phone + "---发送失败原因为：---" + "访问频率过快");
            }
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	//author wangyun 2012-12-17  REQ00012521-新短信平台对接（C03对应短信平台的查勘通知） start
	/**
	 * 新短信平台对接  重新写了短信发送方法  增加了短信类型  该类型需要在短信平台系统中预先设置
	 * @param String phone  短信接收人电话号码
	 * @param String contents  短信内容
	 * @param String orgCode   短信发送机构代码  目前由于费用都记在总公司 直接写成2000000000   
	 * @throws SQLException
	 * @throws Exception
	 */
	public String sendMessage(String phone,String contents,String orgCode,String opType )
	{
		String sendMessageFlag=""; //短信发送状态码
		long startt = System.currentTimeMillis();
		try {
			//准备参数
			StringHolder sendResMsg = new StringHolder();
            StringHolder errMsg = new StringHolder();
            //生成短信对象
            MtNewMessage message = new MtNewMessage();
            //设置电话号码
			message.setPhoneNumber(phone);
			//设置短信内容
			message.setContent(contents);
			//从数据库获取短信平台的webservice地址
//			log.debug("交互地址是"+PubTools.getNameByCode("SendMessageURL", "1"));
			//webservice调用
			SmsNewOperatorService service = new SmsNewOperatorServiceLocator();
			SmsNewOperator_PortType webService=new SmsNewOperatorSoapBindingStub(new java.net.URL("http://10.1.100.7:7013/ema/services/SmsNewOperator?wsdl"),service);
			//由于初期短信费用都记在总公司所以下发的机构代码都写成总公司代码
			webService.sendSms("2000000000", opType, message, sendResMsg, errMsg);
			log.debug("sendSmsResMsg:" + sendResMsg.value);
			log.debug("sendSmsErrMsg:" + errMsg.value);
            long endt = System.currentTimeMillis();
            log.debug("-----发送短信结束：发送1条，共耗时 " + (endt - startt) + " 毫秒");
            //获取短信发送结果
           /* //创建一个Document对象
            org.dom4j.Document doc =  org.dom4j.DocumentHelper.parseText(sendResMsg.value); 
            //获取该被劫取文档的开头，使用XPATH去获取，即Xml代码  
            String xpath = "/sendResp/sms/smsID";//指定要获取的节点的路径
            //读取节点
            org.dom4j.Element ele = (org.dom4j.Element)doc.selectSingleNode(xpath); 
            //获取该节点的值
            */            
            String reslutValue = "";
            reslutValue = errMsg.value;
            /**错误码说明
             * -1：输入参数不正确，请检查机构代码，业务类型，等输入参数是否为空
			   -2：机构不存在，请检查机构代码是否正确
			   -3：机构没有对应的短信服务类型
			   -4：客户端ip地址不正确（当需要ip校验时）
			   -5：smsId与数据库重复（下发短信时，如果smsId 由客户端传入，该参数不能重复）
			   -6：内容含有非法关键字，请检查下发内容。
			   -7：对应的号码下发失败，下发号码为空或其他错误，导致该号码发送失败
			   -8：访问频率过快
             */
            if("-1".equals(reslutValue) || "-2".equals(reslutValue) || "-3".equals(reslutValue)|| "-4".equals(reslutValue)||"-5".equals(reslutValue)||"-5".equals(reslutValue) || "-7".equals(reslutValue) || "-8".equals(reslutValue)){
            	sendMessageFlag="0";//发送失败
            }else{
            	sendMessageFlag="1";//发送成功
            }
            if("-1".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "输入参数不正确，请检查机构代码，业务类型，等输入参数是否为空");
            }else if("-2".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "机构不存在，请检查机构代码是否正确");
            }else if("-3".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---"+ "机构没有对应的短信服务类型");
            }else if("-4".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "客户端ip地址不正确（当需要ip校验时）");
            }else if("-5".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "smsId与数据库重复（下发短信时，如果smsId 由客户端传入，该参数不能重复）");
            }else if("-6".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "内容含有非法关键字，请检查下发内容");
            }else if("-7".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "对应的号码下发失败，下发号码为空或其他错误，导致该号码发送失败");
            }else if("-8".equals(reslutValue)){
            	log.debug("----orgCode:"+ orgCode + "-----phone:" + phone + "---发送失败原因为：---" + "访问频率过快");
            }
		} catch (Exception e) {
			e.printStackTrace();
			sendMessageFlag="0";
		}
		return sendMessageFlag;
	}
  //author wangyun 2012-12-17  REQ00012521-新短信平台对接（C03对应短信平台的查勘通知） end
	
}
